Game Clan Matchmaking

ABSTRACT

Various systems, methods, and computer readable instructions are disclosed herein for a video game clan matchmaking service. In an embodiment, a matchmaking service calculates the weighted skill level of all participating members of a clan, along with the preferences of that clan, to find a well-matched clan. The matchmaking service may collect the skill statistics data of various clans and all their members over a number of game sessions. In one embodiment, the service may calculate the weighted skill level of a clan based on the clan&#39;s statistics data and the statistics data of current participating members to determine a weighted skill level. The service may then use this weighted skill level, along with preferences, to match this clan with another clan that has similar skill level and preferences.

COPYRIGHT NOTICE AND PERMISSION

A portion of the disclosure of this patent document may contain material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever. The following notice shall apply to this document: Copyright® 2006, 2007 Microsoft Corp.

FIELD OF TECHNOLOGY

The presently disclosed subject matter relates to the field of computing, and more particularly, to fields such as entertainment consoles, although these are merely exemplary and non-limiting fields.

BACKGROUND

In recent years, online multi-player services for video games have exploded in popularity. For example, the popular XBOX LIVE® service made available by Microsoft Corporation of Redmond, Wash. allows gamers anywhere in the world to play with and against each other. Other online multi-player services presently include the PLAYSTATION NETWORK® service made available by Sony Corporation of America of Inglewood, Calif. and the WIICONNECT24® service made available by Nintendo of America Corporation of Redmond, Wash.

In computer and video gaming, a clan is typically a group of players who play multiplayer games together. Such games may range from groups of a few players to hundreds or thousands of players comprising a variety of organizational structures. Joining a clan provides a player access to resources, knowledge, and assistance in accomplishing many game related goals. In addition, playing together with like-minded players provides social interaction and thus enhances the video gaming experience.

A video game matchmaking service provides a player with a candidate opponent or co-player when the player desires to play a multiplayer game and further desires to be matched with another player over a network. The matchmaking service typically uses a player's skill level as measured by various factors such as the player's achievement level. However, in a clan, individual players may have varying degrees of skill and experience. Some clans may focus on competition and may only allow skilled players who they think can help their clan win matches. For such clans, a prospective clan member may be asked to prove their skill in a game. Some teams may only recruit players who have a proven history with other successful teams.

It is typically the case that a group of players may have different skills levels. Furthermore, some multiplayer games have different roles. For example, many games have supporting roles as well as more direct action roles. It is thus desirable that clans can access a matchmaking service that can provide opponent clans that shares generally similar skill levels and preferences and provide a good gaming experience.

SUMMARY

Various systems, methods, and computer readable instructions are disclosed herein for a clan matchmaking service. In one exemplary and non-limiting aspect of the present disclosure, a matchmaking service calculates the weighted skill level of all participating members of a clan, along with the preferences of that clan, to find a well-matched clan. The matchmaking service may collect the skill statistics data of various clans and all their members over a number of game sessions. In one embodiment, the service may calculate the weighted skill level of a clan based on the clan's statistics data and the statistics data of current participating members to determine a weighted skill level. The service may then use this weighted skill level, along with preferences, to match this clan with another clan that has similar skill level and preferences.

It should be noted that this Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing Summary, as well as the following Detailed Description, is better understood when read in conjunction with the appended drawings. In order to illustrate the present disclosure, various aspects of the disclosure are illustrated. However, the disclosure is not limited to the specific aspects shown. The following figures are included:

FIG. 1 illustrates an exemplary console for subject matter discussed in FIGS. 4-7;

FIG. 2 illustrates an exemplary computing environment for subject matter discussed with reference to FIGS. 4-7;

FIG. 3 illustrates an exemplary networking environment for subject matter discussed with reference to FIGS. 4-7;

FIG. 4 illustrates an exemplary and non-limiting system that may implement an embodiment of a game clan matchmaking function;

FIGS. 5 and 6 illustrates an exemplary method of providing a game clan matchmaking function; and

FIG. 7 illustrates an exemplary method of providing a localized game clan matchmaking function.

DETAILED DESCRIPTION

Exemplary Game Console, PC, and Networking Aspects

This section of the present disclosure provides the general aspects of an exemplary and non-limiting game console. Referring now to FIG. 1, a block diagram shows an exemplary multimedia console. The multimedia console 100 has a central processing unit (CPU) 101 having a level 1 (L1) cache 102, a level 2 (L2) cache 104, and a flash ROM (Read-only Memory) 106. The level 1 cache 102 and level 2 cache 104 temporarily store data and hence reduce the number of memory access cycles, thereby improving processing speed and throughput. The flash ROM 106 may store executable code that is loaded during an initial phase of a boot process when the multimedia console 100 is powered. Alternatively, the executable code that is loaded during the initial boot phase may be stored in a flash memory device (not shown). Furthermore, ROM 106 may be located separate from CPU 101.

A graphics processing unit (GPU) 108 and a video encoder/video codec (coder/decoder) 114 form a video processing pipeline for high speed and high resolution graphics processing. Data is carried from the graphics processing unit 108 to the video encoder/video codec 114 via a bus. The video processing pipeline outputs data to an A/V (audio/video) port 140 for transmission to a television or other display. A memory controller 110 is connected to the GPU 108 and CPU 101 to facilitate processor access to various types of memory 112, such as, but not limited to, a RAM (Random Access Memory).

The multimedia console 100 includes an I/O controller 120, a system management controller 122, an audio processing unit 123, a network interface controller 124, a first USB host controller 126, a second USB controller 128 and a front panel I/O subassembly 130 that are preferably implemented on a module 1 18. The USB controllers 126 and 128 serve as hosts for peripheral controllers 142(1)-142(2), a wireless adapter 148, and an external memory unit 146 (e.g., flash memory, external CD/DVD ROM drive, removable media, etc.). The network interface 124 and/or wireless adapter 148 provide access to a network (e.g., the Internet, home network, etc.) and may be any of a wide variety of various wired or wireless interface components including an Ethernet card, a modem, a Bluetooth module, a cable modem, and the like.

System memory 143 is provided to store application data that is loaded during the boot process. A media drive 144 is provided and may comprise a DVD/CD drive, hard drive, or other removable media drive, etc. The media drive 144 may be internal or external to the multimedia console 100. Application data may be accessed via the media drive 144 for execution, playback, etc. by the multimedia console 100. The media drive 144 is connected to the I/O controller 120 via a bus, such as a Serial ATA bus or other high speed connection (e.g., IEEE 1394).

The system management controller 122 provides a variety of service functions related to assuring availability of the multimedia console 100. The audio processing unit 123 and an audio codec 132 form a corresponding audio processing pipeline with high fidelity, 3D, surround, and stereo audio processing according to aspects of the present disclosure described above. Audio data is carried between the audio processing unit 123 and the audio codec 126 via a communication link. The audio processing pipeline outputs data to the A/V port 140 for reproduction by an external audio player or device having audio capabilities.

The front panel I/O subassembly 130 supports the functionality of the power button 150 and the eject button 152, as well as any LEDs (light emitting diodes) or other indicators exposed on the outer surface of the multimedia console 100. A system power supply module 136 provides power to the components of the multimedia console 100. A fan 138 cools the circuitry within the multimedia console 100.

The CPU 101, GPU 108, memory controller 110, and various other components within the multimedia console 100 are interconnected via one or more buses, including serial and parallel buses, a memory bus, a peripheral bus, and a processor or local bus using any of a variety of bus architectures.

When the multimedia console 100 is powered on or rebooted, application data may be loaded from the system memory 143 into memory 112 and/or caches 102, 104 and executed on the CPU 101. The application may present a graphical user interface that provides a consistent user experience when navigating to different media types available on the multimedia console 100. In operation, applications and/or other media contained within the media drive 144 may be launched or played from the media drive 144 to provide additional functionalities to the multimedia console 100.

The multimedia console 100 may be operated as a standalone system by simply connecting the system to a television or other display. In this standalone mode, the multimedia console 100 may allow one or more users to interact with the system, watch movies, listen to music, and the like. However, with the integration of broadband connectivity made available through the network interface 124 or the wireless adapter 148, the multimedia console 100 may further be operated as a participant in a larger network community. In this latter scenario, the console 100 may be connected via a network to a server.

Second, now turning to FIG. 2, illustrated is a block diagram representing an exemplary computing device that may be suitable for use in conjunction with implementing the subject matter disclosed above. Numerous embodiments of the present disclosure may execute on a computer. For example, the computer executable instructions that carry out the processes and methods for providing PC experiences on gaming consoles may reside and/or be executed in such a computing environment as shown in FIG. 1. The computing system environment 220 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the presently disclosed subject matter. Neither should the computing environment 220 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 220. In some embodiments the various depicted computing elements may include circuitry configured to instantiate specific aspects of the present disclosure. For example, the term circuitry used in the disclosure can include specialized hardware components configured to perform function(s) by firmware or switches. In other examples embodiments the term circuitry can include a general purpose processing unit, memory, etc., configured by software instructions that embody logic operable to perform function(s). In example embodiments where circuitry includes a combination of hardware and software, an implementer may write source code embodying logic and the source code can be compiled into machine readable code that can be processed by the general purpose processing unit. Since one skilled in the art can appreciate that the state of the art has evolved to a point where there is little difference between hardware, software, or a combination of hardware/software, the selection of hardware versus software to effectuate specific functions is a design choice left to an implementer. More specifically, one of skill in the art can appreciate that a software process can be transformed into an equivalent hardware structure, and a hardware structure can itself be transformed into an equivalent software process. Thus, the selection of a hardware implementation versus a software implementation is one of design choice and left to the implementer.

Computer 241 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 241 and includes both volatile and nonvolatile media, removable and non-removable media. The system memory 222 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 223 and random access memory (RAM) 260. A basic input/output system 224 (BIOS), containing the basic routines that help to transfer information between elements within computer 241, such as during start-up, is typically stored in ROM 223. RAM 260 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 259. By way of example, and not limitation, FIG. 2 illustrates operating system 225, application programs 226, other program modules 227, and program data 228.

The computer 241 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only, FIG. 2 illustrates a hard disk drive 238 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 239 that reads from or writes to a removable, nonvolatile magnetic disk 254, and an optical disk drive 240 that reads from or writes to a removable, nonvolatile optical disk 253 such as a CD ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. The hard disk drive 238 is typically connected to the system bus 221 through an non-removable memory interface such as interface 234, and magnetic disk drive 239 and optical disk drive 240 are typically connected to the system bus 221 by a removable memory interface, such as interface 235.

The drives and their associated computer storage media discussed above and illustrated in FIG. 2, provide storage of computer readable instructions, data structures, program modules and other data for the computer 241. In FIG. 2, for example, hard disk drive 238 is illustrated as storing operating system 258, application programs 257, other program modules 256, and program data 255. Note that these components can either be the same as or different from operating system 225, application programs 226, other program modules 227, and program data 228. Operating system 258, application programs 257, other program modules 256, and program data 255 are given different numbers here to illustrate that, at a minimum, they are different copies. A user may enter commands and information into the computer 241 through input devices such as a keyboard 251 and pointing device 252, commonly referred to as a mouse, trackball or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 259 through a user input interface 236 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor 242 or other type of display device is also connected to the system bus 221 via an interface, such as a video interface 232. In addition to the monitor, computers may also include other peripheral output devices such as speakers 244 and printer 243, which may be connected through a output peripheral interface 233.

The computer 241 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 246. The remote computer 246 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 241, although only a memory storage device 247 has been illustrated in FIG. 2. The logical connections depicted in FIG. 2 include a local area network (LAN) 245 and a wide area network (WAN) 249, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.

When used in a LAN networking environment, the computer 241 is connected to the LAN 245 through a network interface or adapter 237. When used in a WAN networking environment, the computer 241 typically includes a modem 250 or other means for establishing communications over the WAN 249, such as the Internet. The modem 250, which may be internal or external, may be connected to the system bus 221 via the user input interface 236, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 241, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation, FIG. 2 illustrates remote application programs 248 as residing on memory device 247. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.

FIG. 3 provides a schematic diagram of an exemplary networked or distributed computing environment. The environment comprises computing devices 153, 156, and 157 as well as object 155 and database 158. Each of these entities 153, 155, 156, 157, and 158 may comprise or make use of programs, methods, data stores, programmable logic, etc. The entities 153, 155, 156, 157, and 158 may span portions of the same or different devices such as PDAs, audio/video devices, MP3 players, smart phones, DVD players, cable box tuners, or just about any computing devices capable of remoted content provided by server PCs. Each entity 153, 155, 156, 157, and 158 can communicate with another entity 153, 155, 156, 157, and 158 by way of the communications network 154. In this regard, any entity may be responsible for the maintenance and updating of a database 158 or other storage element.

This network 154 may itself comprise other computing entities that provide services to the system of FIG. 3, and may itself represent multiple interconnected networks. In accordance with an aspect of the presently disclosed subject matter, each entity 153, 155, 156, 157, and 158 may contain discrete functional program modules that might make use of an API, or other object, software, firmware and/or hardware, to request services of one or more of the other entities 153, 155, 156, 157, and 158.

It can also be appreciated that an object, such as 155, may be hosted on another computing device 156. Thus, although the physical environment depicted may show the connected devices as computers, such illustration is merely exemplary and the physical environment may alternatively be depicted or described comprising various digital devices such as PDAs, televisions, MP3 players, etc., software objects such as interfaces, COM objects and the like.

There are a variety of systems, components, and network configurations that support distributed computing environments. For example, computing systems may be connected together by wired or wireless systems, by local networks or widely distributed networks. Currently, many networks are coupled to the Internet, which provides an infrastructure for widely distributed computing and encompasses many different networks. Any such infrastructures, whether coupled to the Internet or not, may be used in conjunction with the systems and methods provided.

A network infrastructure may enable a host of network topologies such as client/server, peer-to-peer, or hybrid architectures. The “client” is a member of a class or group that uses the services of another class or group to which it is not related. In computing, a client is a process, i.e., roughly a set of instructions or tasks, that requests a service provided by another program. The client process utilizes the requested service without having to “know” any working details about the other program or the service itself. In a client/server architecture, particularly a networked system, a client is usually a computer that accesses shared network resources provided by another computer, e.g., a server. In the example of FIG. 12, any entity 153, 155, 156, 157, and 158 can be considered a client, a server, or both, depending on the circumstances. And, moreover, regarding the entertainment console, it can be a client to a server.

A server is typically, though not necessarily, a remote computer system accessible over a remote or local network, such as the Internet. The client process may be active in a first computer system, and the server process may be active in a second computer system, communicating with one another over a communications medium, thus providing distributed functionality and allowing multiple clients to take advantage of the information-gathering capabilities of the server. Any software objects may be distributed across multiple computing devices or objects.

Client(s) and server(s) communicate with one another utilizing the functionality provided by protocol layer(s). For example, HyperText Transfer Protocol (HTTP) is a common protocol that is used in conjunction with the World Wide Web (WWW), or “the Web.” Typically, a computer network address such as an Internet Protocol (IP) address or other reference such as a Universal Resource Locator (URL) can be used to identify the server or client computers to each other. The network address can be referred to as a URL address. Communication can be provided over a communications medium, e.g., client(s) and server(s) may be coupled to one another via TCP/IP connection(s) for high-capacity communication.

In light of the diverse computing environments that may be built according to the general framework provided in FIG. 3 and the further diversification that can occur in computing in a network environment such as that of FIG. 3, the systems and methods provided herein cannot be construed as limited in any way to a particular computing architecture or operating system. Instead, the presently disclosed subject matter should not be limited to any single embodiment, but rather should be construed in breadth and scope in accordance with the appended claims. Thus, for example, although game consoles and server PCs have been discussed, just as easily full desktops could be remoted to smart phones as a means to access data and functionality that is otherwise unavailable to smart phones.

Finally, it should also be noted that the various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. Thus, the methods, computer readable media, and systems of the presently disclosed subject matter, or certain aspects or portions thereof, may take the form of program code (i.e., instructions) embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, or any other machine-readable storage medium, where, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the subject matter.

In the case of program code execution on programmable computers, the computing device may generally include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. One or more programs that may utilize the creation and/or implementation of domain-specific programming models aspects of the present disclosure, e.g., through the use of a data processing API or the like, are preferably implemented in a high level procedural or object oriented programming language to communicate with a computer system. However, the program(s) can be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language, and combined with hardware implementations.

Game Clan Matchmaking

In computer and video gaming, a clan, also known as a guild, is typically a group of players who play multiplayer games together. Clans typically exist for online games and console games with networking capability. Such games may range from groups of a few players to hundreds or thousands of players comprising a variety of organizational structures. Clans typically involve a group of gamers playing one particular game. Joining a clan provides a player access to resources, knowledge, and assistance needed to accomplish many game related goals. In addition, playing together with like-minded players provides social interaction and thus enhances the gaming experience.

Some clans may be multi-game clans, allowing gamers to play with the same people in different games. Some clans may organize in order to play for a limited time. Such clans typically start more spontaneously, have smaller numbers of members, focus on a single game and have a short life span. Other clans may be larger and have a longer life span, and are typically directed to a single game. Some clans may be more specialized, and may require more selective criteria for membership in the clan. Such criteria may take into account not only the player's playing skill but their time commitment and, in some cases, computer hardware and bandwidth.

The lifespan of a clan may vary from a few weeks to months and years. However, in many cases a group of players may be playing together for the first time and thus not have had any previous history of clan game play.

A video game matchmaking service may provide a player with a candidate opponent or co-player when the player desires to play a multiplayer game and further desires to be matched with another player over a network. The matchmaking service typically uses a player's skill level as measured by various factors such as achievement level. However, in a clan, individual players may have varying degrees of skill and experience. Some clans may focus on competition and may only allow skilled players who they think can help their clan win matches. For such clans, a prospective clan member may be asked to prove their skill in a game. Some teams may only recruit players who have a proven history with other successful teams.

It is also typically the case that a group of players may have different skills levels. Furthermore, some multiplayer games have different roles. For example, many games have supporting roles as well as more direct action roles.

Gamers in a multiplayer environment are typically scored, either individually according to a fixed scoring system, or relative to other players. The score of a player is generally represented by a ranking or other indication of the skill of the player. The purpose of scoring is to provide a competitive measure that enhances enjoyment of the game through competition, either against oneself or against other players. Scoring also provides an opportunity for players to have their overall skill level recognized and acknowledged by the broader gaming community.

The purpose of a matchmaking system is to provide matches between players according to some desired matching criteria. Typically, a matchmaking system will identify and track a number of attributes of a player. The skill of a gamer in a particular game is one of many attributes that can be used to match the gamer with another gamer. The purpose of matchmaking can also vary. For example, matches can be made to place gamers into competitive matches. In other cases, players may desire to be matched with other players who have similar interests or playing styles.

Players may wish to evaluate their skills relative to people they know or relative to potential opponents they have never played, generally so that they can arrange interesting matches. In order to provide interesting matches, the matchmaking system will typically avoid situations where the chances of winning for the participating players are unbalanced. Typically, matches which have a relatively even chance of any participant winning are typically considered desirable matches.

When a video game player desires to play an interactive game, and further desires to find another player to collaborate with or play against, various services may be provided to provide a player matching service. As mentioned, matchmaking is an important service provided by gaming leagues and services. Matchmaking allows participants to find teammates and opponents who are reasonably close to their own skill level and thus more likely that the match will be interesting and challenging.

Ranking systems are used in many competitive games and sports, and any ranking systems have been devised to enable competitive leagues to compare the relative skills of their members. A ranking system typically comprises the tracking of the skills of all players based on the game outcomes between players, arranging interesting matches for its members, and in some cases publishing the rankings of its members.

An example ranking system in use today is the Elo rating system, which is a method for calculating the relative skill levels of players in two-player games such as chess. In chess, a player's expected score is the player's probability of winning plus half of the player's probability of drawing. Thus when a player's actual scores exceed the player's expected scores, the Elo algorithm system will adjust the player's rating upward.

In video games, one ranking system that has been used is the TrueSkill ranking system used in the Xbox Live online gaming service. The TrueSkill ranking system uses the final standings of all teams in a game in order to update the skill estimates of gamers playing in a game. Rather than assuming a single fixed skill for each player, the system uses a Gaussian distribution to model a player's skill. The score distribution for each player may be modeled with a Gaussian distribution and may be determined through a Bayesian inference algorithm. Such a method is further described in commonly assigned U.S. Pat. No. 7,050,868 entitled “Bayesian Scoring.”

In various embodiments, methods, systems and instructions stored on computer readable media that provide clan matchmaking services are disclosed. Typically, such a service may be provided by a centralized service such as an online gaming service. Clans may be those formed by one or more players playing together on a local network with access to the Internet, or players playing over the Internet who have decided to form a clan. Such a matchmaking service may consider a player's present and past game performance statistics, a profile for the clan, the preferences of the players, and the like. It should be appreciated that any suitable data store in any suitable format may be used to store and/or communicate game performance and preference data, including a relational database, object-oriented database, unstructured database, an in-memory database, or other data store. A storage array may be constructed using a flat file system such as ACSII text, a binary file, data transmitted across a communication network, or any other file system. Notwithstanding these possible implementations of the foregoing data stores, the term data store and storage array as used herein refer to any data that is collected and stored in any manner accessible by a computer.

In some embodiments, methods for matching a single player may be extended to clans. For example, the skill level and preferences for each player may be determined or retrieved for every member of the clan. The individual player information may be combined to form a clan profile. In some embodiments, the clan profile may comprise a clan skill level, a clan preference profile, and the like. The individual player information may be combined using various methods such as averaging, weighted scoring, distribution profiles, and the like.

When determining a clan's profile, various factors may be considered to determine an appropriate profile for clan matching. In some cases it may not be desirable to merely accumulate or average the individual player scores, as the best players may then skew the overall clan profile. In some cases it may be advantageous to individually weight a player's skill level and/or preferences. Weighting factors may be determined based on the distribution of the players past scores or skill levels, or various other methods. For example, a player with an extensive game history may be more heavily weighted than a player whose history comprises a single high score. The single high score may not be indicative of the player's skill because of the small sample size, and thus a lower weight may reduce the potential skewing effect of the non-representative score.

In one embodiment, only a player's current score or performance data may be used. An online gaming service may, for example, maintain a database of player scores and other performance factors such as achievement level. Such a database may be continuously updated by the online gaming service as players use the service. Such information may be further analyzed to create and maintain a user profile that may incorporate player performance and other information. Furthermore, the user profile may be automatically updated and saved for each player after each gaming session or other time period. In other embodiments, a player may provide such information if the gaming service does not have access to the information, or the player's localized game application may provide the information to the gaming service if the player's history is saved on the local system. However, it may be the case that a player has no history for the particular game for which a clan match is requested.

In another embodiment, a player's performance in a related game (e.g., a game of the same genre) may be used to predict a score or performance for the game for which a clan match is requested. Such a feature may be useful, for example, when a player in a clan has no performance profile and thus no immediate basis to account for that player's contribution to the clan profile. A weight or scale factor may be used to indicate the level of similarity to the currently requested game, and thus the player's performance may be scaled according to the game's similarity. For example, if the currently requested game is the sequel to a game for which a player's performance data is available, the similarity weight or scale factor may be high. If the currently requested is only of the same genre but comprises some differences with a player's prior performance data, the scale factor or weight may be lower.

The matchmaking service may also use preferences provided by the player, or may infer such preferences by compiling various player profile data. Such preferences may include characteristics of other players that the player prefers to play with or against. For example, the player may provide that he/she prefers to play against similar playing styles as determined by the game or system. The player may also specify that he/she prefers to play against, for example, “aggressive” style players and other styles of play, players of a certain achievement level, language preferences, and the like.

Game preferences may generally include player behavioral data, such as style of play (e.g., aggressive, conservative), style of language (e.g., player uses foul language), and the like. Game preferences may further include cultural and demographic factors such as native language, age group, gender, and the like. Game preferences may also include specific player information, such as player ratings, provided by the player or other players. For example, a player may prefer not to play with a specific player or group of players based on previous gaming experiences. The player may also desire to exclude, for example, all players below an identified rating.

Player preferences may also be determined using player reviews or evaluations of other players. Such reviews typically indicate a user's preferences for playing style. Reviews can also indicate that a player may not desire to collaborate or play with a specific player or type of player.

In some cases a clan may be predefined with a specifically identified set of players. The clan may have played at least one game together, and may be identifiable by a clan name or other means of identification. In other cases, an ad hoc clan may be formed. In an ad hoc clan, a group of players that has not previously been identified as a clan may desire to form a clan on the spot. Furthermore, an ad hoc group may seek to find another clan to play against or with. In such a case, it may be desirable to use known or available individual player skill and preference data for members of the ad hoc clan and determine an instantaneous clan profile. The instantaneous clan profile may then be used to find a suitable matching clan.

Player performance and preference data may also be classified as passive data and active data. Passive data typically includes data that may be collected during the course of a player's game play and interaction with a gaming system, such as a player's play history. Active data may include selections made by the player or specifically provided by the player, such as the gaming zone, the type of game, and reviews provided by the player (e.g., likes and dislikes).

In some embodiments, a user interface may be provided for game clan matchmaking. In one embodiment the user interface may be provided directly within the video game application. A user may be provided an interface, for example, to indicate that the player desires to join a clan. The interface may further provide for player preference and performance data inputs. For example, a player may desire to join a clan that only includes beginning level players.

In other embodiments, the user interface may be provided separately from the video game application. For example, an online gaming service may provide a user interface via a web browser. It should be appreciated that the systems and methods implementing the clan matching functionality may reside in the application, or the system, or both.

If a clan matchmaking feature is provided by the game platform, the matchmaking function may further provide an application programming interface (API) that video game applications may use to access matchmaking services and features. Furthermore, a software development kit can be provided so that game developers may develop applications that incorporate the matchmaking feature. An API may be provided on a gaming console or local computer in order to provide access to clan matchmaking services to the locally executing video game application. In other embodiments an API may be provided on the server side and provide in conjunction with the online gaming service. Alternatively, an API or components of an API may be provided both on the client side and the server side.

After a video game session, the members of the clan may further be provided the option of evaluating the match provided by the clan matchmaking function. Such feedback may further be used to describe a player's preferences and can be used to better tailor future matchmaking sessions for clans in which the player is a member. The feedback may also be used by the matchmaking function to update parameters used in ranking and matchmaking algorithms. A matching method or algorithm may incorporate artificial intelligence techniques to improve matchmaking results. The matchmaking system may thus include feedback and learning features such that the provided feedback may be used to dynamically improve matchmaking results and provide a better gaming experience for clan members.

Referring now to FIG. 4, illustrated is an exemplary and non-limiting system that could implement various aspects of the embodiments disclosed herein. A clan matchmaking system 400 may comprise player performance data 410 that further comprises present and past game performance data from various gaming sessions involving players who use an associated online gaming service. The performance data may include data for a game that the player and the player's associated clan desires to play and desires to find a matching clan. The matchmaking service 400 may also comprise player preference data 420 that may further comprise both passive and active data regarding a player's preferences and profile. Such preference may include play style, language, skill level, game preferences and ratings.

As mentioned, the matchmaking system 400 may comprise a database for storing performance, preference, and other data. A database update function 430 may maintain the database with active and passive data as players communicate and interact with the online gaming service and the matchmaking service 400 in particular. Matchmaking service 400 may further comprise a player profile update function 440 that may create and maintain individual player profiles based upon performance, preference and other data. The player profiles may further comprise current and past clans that the player has joined, and other information that may facilitate efficient retrieval of player information. Matchmaking service 400 may further comprise a clan profile update function 440 that may create and maintain clan profiles based upon current and past clans that have been established with the online gaming service and the matchmaking service 400 in particular.

Matchmaking service 400 may further comprise a matchmaking function 450 that includes various functions and algorithms for determining a matching clan. In an embodiment, weighted skill levels and said game preference data for a plurality of clans may be used. The plurality of clans may comprise other clans that are seeking a match, and may further comprise predefined clans or ad hoc clans that have been formed for the purpose of finding a clan to play with or against at a particular time.

As mentioned, various ranking and matching algorithms may be used to provide a matching clan. In one embodiment, a simple average of player performance parameters may be used. For example, a performance parameter indicative of a player's skill may be collected for each player of a clan, and the skill parameters may be averaged to determine a clan average skill. A second clan with a similar average skill may then be selected to determine a matching clan within a predetermined threshold. Such a method may further be augmented by using player preference information. For example, a matchmaking algorithm may determine all preference parameters for which at least half of the clan members have selected as a preference. The matchmaking algorithm may then select as matching clans only those clans that have also selected the same preference as a clan preference. The foregoing discussion is only exemplary, and various embodiments incorporating the use of player preferences are contemplated.

Various methods and algorithms for ranking clans may be used, such as Gaussian modeling, Bayesian inference methods, and the like. Furthermore, as mentioned above individual player scores or skill levels may be weighted to prevent skewing by outlying performance data. Alternatively, the weights of certain players may be increased or decreased to more accurately provide clan matches. For example, a single highly skilled player may provide a clan a superior advantage over another clan with experienced players that are not highly skilled. Thus in another embodiment, a weighted algorithm may increase the weight of exceptionally skilled players to more properly reflect the overall winning potential of the clan to which the exceptionally skilled player belongs. Likewise, a poorly rated player who may greatly increase the probability that the clan to which the poorly rated player belongs will lose to other clans may be assigned a low weight or even a negative weight to reflect the overall impact to the clan's chances of winning. Winning potential and other effects of player skills and rankings may be based on expected or probabilistic effects of the skills and rankings.

In another embodiment the weighted algorithm may comprise a table or list of player rankings or scores and the weight that may be assigned to that player's score or ranking depending on the size of the clan. Such a relationship may also be reflected by a mathematical relationship, function, or equation. The size of the clan may be considered because an individual's score or ranking may be diluted by a large clan. Alternatively, the effect of a player's score or ranking may be increased if the clan size is smaller. The impact of individual player rankings and scores on the overall clan performance may vary depending on the specific game, and the game clan matchmaking function may account for such differences when providing the matchmaking service. Additionally, the game developer may provide such weights or parameters that may be used by the matchmaking service via the API.

In another aspect of the presently disclosed subject matter, an exemplary method may be implemented for determining a matching clan. However, it should be understood that similar systems, computer readable media, and other mechanisms could be used to carry out this aspect of the presently disclosed subject matter. Referring to FIG. 5, at block 500, a request for a matching clan may be received. At block 510, it may be determined whether the requesting clan has been predefined or otherwise has pre-existing information available. If the clan is predefined, then in block 520 player performance data may be retrieved from a data store. In block 530, player preference data may be retrieved from a data store. In block 540, skill levels may be determined for the clan members, if not already defined by the player performance data retrieved in block 520.

In block 550, a clan profile for the requesting clan may be determined, in accordance with the weighted skill levels and/or player preference data. The clan profiles may then be used in block 560 to determine a matching clan according to a suitable matching function or algorithm. After the matching clan has been determined, the requesting clan may proceed to play with/against the matching clan.

In block 570, feedback may be received from the requesting clan. The feedback may include, for example, a rating of the match provided by the matchmaking function, based on the resulting challenge of play or suitability of the matching clan. Such feedback may be used by the matchmaking function to update the matchmaking algorithm in block 580 to further improve the matchmaking characteristics and performance.

Returning to block 510 and referring further to FIG. 6, if there is no pre-existing or predefined clan available, then in block 610, it may be determined whether any saved game data is available for any members of the requesting clan. If such saved data is available, then in block 620 the available player performance data is retrieved. In block 630, it is determined whether for any player for which performance data was not available in block 620, if data from other games has been saved and is available. If such saved data is available, then in block 640 the available player performance data from the other games is retrieved.

In block 650, the data from the other games may be extrapolated to provide performance data that may be used in block 540 of FIG. 5. Typically, such player performance data from other games may be extrapolated if the game is similar or of the same genre. Extrapolation may not be possible if the other game is significantly dissimilar. However, there may be a high correlation in performance data if the other game is a sequel or a variation of the game for which a matching clan is requested. In an embodiment, a scale factor may be used to represent the correlation between the other game and the currently requested game. A scale factor of zero may indicate that the game is completely dissimilar. Alternatively, a scale factor of one may indicate that the difference between the other game and the current game is negligible.

Returning to FIG. 6, if in block 630 it is determined that no pre-existing player performance data is available, then in block 660 default values may be determined for use by block 540 of FIG. 5. Such a default value may simply be a neutral value that indicates, for example, a beginning level. However, if it is determined that a significant number of players possess a minimal level of skill despite the lack of pre-existing or saved game performance data, then a suitable default player performance value may be used.

Turning now to FIG. 7, illustrated is an exemplary method of providing matchmaking services on a local platform or console, wherein the player may access an online gaming service that may further provide an online game clan matchmaking service. However, it should be understood that similar systems, computer readable media, and other mechanisms could be used to carry out this aspect of the presently disclosed subject matter. Referring to FIG. 7, at block 700, a player may launch a video game application. In block 705, the platform or console may further access an online gaming service. In block 710, the video game application may further interact with an application programming interface (API) that provides access and services to matchmaking services of an online gaming service.

In block 715, a user interface may be provided to the video game player. Such a UI may receive inputs from the player for information such as the names or identification of a clan to which the player may belong. In block 720, the UI may update clan data based on inputs received by the user. At block 725, it may be determined whether the player has pre-existing performance information available or if the information needs to be updated. The player performance data may be retrieved from a local data store. In block 730, it may be determined whether the player has pre-existing preference information available or if the preference information needs to be updated. If so, then player preference data may be retrieved from a local data store. In block 735, any updated information may be transmitted to the on-line gaming service. The on-line clan matchmaking service may then execute a matchmaking function.

In block 740, a matching clan may be received by the gaming platform or console. In block 745, the requesting player, together with other members of the clan may proceed to play with/against the matching clan. The other members of the clan may be communicatively coupled to the player via the internet, intranet, or other communications means.

In block 750, feedback may be received from the player. The feedback may include, for example, a rating of the match provided by the matchmaking function, based on the resulting challenge of play or suitability of the matching clan. Such feedback may be transmitted to the online gaming service and the online matchmaking service and used to update the matchmaking algorithm in block 755 to further improve the matchmaking characteristics and performance.

Lastly, while the present disclosure has been described in connection with the preferred aspects, as illustrated in the various figures, it is understood that other similar aspects may be used or modifications and additions may be made to the described aspects for performing the same function of the present disclosure without deviating there from. For example, in various aspects of the disclosure, the providing of game clan matchmaking services was disclosed. However, other equivalent mechanisms to these described aspects are also contemplated by the teachings herein. Therefore, the present disclosure should not be limited to any single aspect, but rather construed in breadth and scope in accordance with the appended claims. 

1. A method for matching video game clans in an online gaming service, comprising: maintaining a database comprising player game performance data and player game preference data; receiving a request for a matching clan from at least one clan; locating game performance data and game preference data for each player of said at least one clan and at least one other clan; determining a weighted skill level for said at least one clan and said at least one other clan based upon said game performance data, wherein said weighted skill level accounts for a probable effect of said player game performance data on expected performance of said at least one clan; determining said matching clan based upon said weighted skill level and said game preference data for said at least one clan and said at least one other clan.
 2. The method of claim 1, wherein said request for a matching clan is received from a clan comprising at least one player who has not previously played with the requesting clan, further comprising determining game performance data and game preference data for said at least one player who has not previously played with the requesting clan.
 3. The method of claim 1, wherein said request for a matching clan is for a game not previously played by the requesting clan, wherein said determining said matching clan further comprises determining said weighted skill level and said game preference data based on player game performance data and player game preference data from other games.
 4. The method of claim 1, wherein said request for a matching clan is received from an ad hoc clan, further comprising determining said weighted skill level and said game preference data based on player game performance data and player game preference data from other games if not available for the currently requested game.
 5. The method of claim 1, wherein said determining said matching clan comprises using a weighted algorithm.
 6. The method of claim 1, wherein said game preference data comprises player behavioral data.
 7. The method of claim 1, wherein said game preference data comprises player demographic data.
 8. The method of claim 1, wherein said game preference data comprises player review data.
 9. The method of claim 1, further comprising maintaining a clan profile for a plurality of game clans in said database, said clan profile based upon a weighted skill level for said plurality of game clans and game preference data for said plurality of game clans.
 10. A system for matching video game clans, comprising: circuitry configured to receive game clan information, game performance data and game preference data from a user; circuitry configured to transmit a request for a matching clan, said game clan information, said game performance data and said game preference data to an online gaming service; circuitry configured to receive from said online service a matching clan, said matching clan based upon clan profiles for a plurality of clans, said clan profiles based upon weighted skill levels and game preference data for said plurality of clans, said weighted skill levels based upon said game performance data.
 11. The system of claim 10, further comprising circuitry configured to provide a matchmaker user interface.
 12. The system of claim 11, wherein said matchmaker user interface is further configured to receive user input for player clan information and game information.
 13. The system of claim 10, further comprising circuitry configured to automatically characterize a game session and update a user profile.
 14. The system of claim 10, further comprising circuitry configured to provide an application programming interface (API) further configured to provide matchmaking services to a video game application.
 15. A computer readable medium storing thereon computer executable instructions for matching video game clans, comprising instructions for: receiving a request for a matching clan from at least one clan; determining game performance data and game preference data for each player of said at least one clan and at least one other clan; determining a weighted skill level for said at least one clan and said at least one other clan based upon said game performance data; determining a clan profile for said at least one clan and said at least one other clan based upon said weighted skill level and said game preference data; determining said matching clan based upon said clan profile for said at least one clan and said at least one other clan.
 16. The computer readable medium of claim 15 further comprising instructions for using default settings when preference data and player profile data are not available.
 17. The computer readable medium of claim 15 further comprising instructions for providing an API for third party applications to provide matchmaking services for video game applications.
 18. The computer readable medium of claim 15 wherein said instructions for determining said matching clan comprises using a weighted algorithm.
 19. The computer readable medium of claim 15 wherein said determining a weighted skill level comprises modeling said game performance data with a Gaussian distribution and using a Bayesian inference algorithm.
 20. The computer readable medium of claim 15 wherein said determining said matching clan comprises using an artificial intelligence algorithm, further comprising receiving user feedback regarding said matching clan and incorporating said user feedback into said artificial intelligence algorithm. 